;(function($) {
	DT.Window = function(options) {
		var _this = this;
		
		DT.Box.apply(this, options);
		
		options = $.extend(this.defaults, {
			type      : 'window',
            title     : '',                 // 窗口标题
			width     : 300,                // 窗口默认宽度
			height    : 200,                // 窗口默认高度
			maxButton : true,               // 是否有最大化按钮
            tPosition : null,               // 临时的位置信息，用于最大化后的还原
			buttons   : [{                  // 用户自定义按钮组
				name  : 'OK',               // 按钮名称
				cls   : '',                 // 按钮样式
				click : function() {        // 单击按钮所要执行的事件

				}
			}]
		},  options);

		$.extend(this.handler, {
			titleBar    : null,
			ctrlBar     : null,
			minButton   : null,
			maxButton   : null,
			closeButton : null,
			buttonsBar  : null
		});

		var _cf = this._createFrame;
		
		this._createFrame = function() {
			var handler = _this.handler;

			_cf.apply(this);
			_cf = null;
			
			handler.titleBar = $('<div></div>').addClass('dt-window-titlebar')
				.insertBefore(handler.work)
				.html(options.title)
                .bind('dblclick', function() {
                    _this.max();
                });

            // 给窗口标题栏设置图标
            options.icon && handler.titleBar.css('background', 'url(' + options.icon + ') no-repeat 3px 2px');

			handler.ctrlBar = $('<ul></ul>').addClass('dt-window-ctrlbar')
				.insertBefore(handler.work);

			handler.closeButton = $('<li></li>').addClass('dt-window-closebutton')
				.appendTo(handler.ctrlBar)
                .bind('click', function(event) {
                    event.stopPropagation();
                    _this._closeHandler.apply(_this);
                });

			options.maxButton && (handler.maxButton = $('<li></li>').addClass('dt-window-maxbutton')
				.appendTo(handler.ctrlBar))
                .bind('click', function() {
                    _this.max();
                });

			handler.minButton = $('<li></li>').addClass('dt-window-minbutton')
				.appendTo(handler.ctrlBar)
                .bind('click', function(event) {
                    event.stopPropagation();
                    _this._minHandler.apply(_this);
                });

			return this;
		};

        // 设置元素的大小
        var _cs = this._setSize;
        this._setSize = function() {
            var handler  = _this.handler,
                titleBar = handler.titleBar;

            _cs.apply(this);

            titleBar.css({
                height : DT.WINDOW_TITLEBAR_HEIGHT
            });

            titleBar.css({
                width : handler.work.width() - handler.ctrlBar.width() - titleBar.css('paddingLeft').replace('px', '')
            })
            handler.work.css({
                height : handler.work.height() - DT.WINDOW_TITLEBAR_HEIGHT
            });

            return this;
        };

        // 初始化最大化窗口参数
        var _maxp = this._maxParam;
        this._maxParam = function() {
            _maxp.apply(this);

            return this;
        };

        // 最小化窗口
        var _minh = this._minHandler;
        this._minHandler = function(fn) {
            _minh.apply(this, [fn]);

            return this;
        };

        // 关闭窗口事件，要覆盖box中的事件，因为删除从内向外进行。
        this._closeHandler = function(fn) {
            // 先最小化窗口，然后再删除元素。
            this._minHandler(function() {
                var handler = _this.handler;

                for (var p in handler) {
                    p !== 'box' && handler[p] && handler[p].remove && handler[p].remove() && (handler[p] = null);
                }

                handler.box.remove();

                handler.box = null;

                var taskbar = DT.moduleManager.getHandler(options.guid, 'taskbar');

                if (taskbar) {
                    taskbar.delIcon(options.guid);
                    DT.moduleManager.setHandler(options.guid, 'taskbar', null);
                }

                $.type(fn) == 'function' && fn();

                DT.moduleManager.remove(options.guid);
            });

            return this;
        };
	};


	var F = function() {};

	F.prototype = DT.Box.prototype;

	DT.Window.prototype = new F();
	DT.Window.constructor = DT.Window;

	//$.extend(DT.Window， DT.Box);

})(jQuery);